#ifndef PATH_H
#define PATH_H

#include <QLinkedList>
#include <QVector3D>

#include "geometry/edge3d.h"
#include "object/paintable.h"

class Path : public Paintable, public QLinkedList< QVector3D >
{
public:
    Path();
    Path(const QVector3D& rkStart, const QVector3D& rkEnd);
    ~Path();

    Path(const Path& rkOther);
    Path& operator = (const Path& rkOther);

    bool isValid() const;

    void paint() const;

    qreal flightLength() const;
    qreal topologicalLength() const;

    qreal covered() const;
    QVector3D position() const;

    qreal move(qreal kLength);

private:
    //------------------------------------------------
    //  Attributes.
    //------------------------------------------------
    qreal m_covered;
};

#endif // PATH_H
